a
分享人:冯强
目录
1.背景介绍
2.知识剖析
3.常见问题
4.解决方案
5.编码实战
6.扩展思考
7.参考文献
8.更多讨论
开发过程中,会不断发现新需求,不断发现bug。如果没有版本控制 ,出现的bug和之前的代码混在一起很难查找bug原因。还会出现软 件代码不一致性、软件内容的冗余、软件开发 过程中的并发性、软 件源代码的安全性,以及软件的整合等问题。
SVN是Subversion的简称,是一个开源代码集中的版本控制系统, 支持大多数常见的操作系统。作为一个开源的版本控制系统,Subversion 管理着随时间改变的数据。这些数据集中放置在一个中央资料档案库 中。这个档案库很像一个普通的文件服务器,它会记住每一次文件的变动。 这样你就可以把档案恢复到旧的版本,或是浏览文件的变动历史。Subversion 是一个通用的系统,可用来管理任何类型的文件,其中包括了程序源码。
集中式代码管理的核心是服务器,所有开发者在开始新一天的工作之前从服务器获取代码,然后开发,最后解决冲突,提交。所有的版本信息都放在服务器上。如果脱离了服务器,开发者基本上可以说是无法工作的。下面举例说明: 开始新一天的工作: 1、从服务器下载项目组最新代码。 2、进入自己的分支,进行工作,每隔一个小时向服务器自己的分支提交一次代码(很多人都有这个习惯。因为有时候自己对代码改来改去,最后又想还原到前一个小时的版本,或者看看前一个小时自己修改了哪些代码)。 3、下班时间快到了,把自己的分支合并到服务器主分支上,一天的工作完成,并反映给服务器.
SVN对中文支持好,操作简单,美工人员,产品人员,测试人员,实 施人员都可轻松上手。使用界面统一,功能完善,操作方便。 集中式版本控制系统缺点就是必须联网才能工作,对网络的带宽要求高。
Git是开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目 。 分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆 (git clone),在本地机器上拷贝一个完整的Git仓库.
分布式版本控制系统根本没有“中央服务器” ,每个人的电脑上都是一个完整的版本库服务器。工作的时候,就不需要联网了, 因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多 个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改 了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方 的修改了。
对程序源代码进行差异化的版本管理,代码库占极少的空间。易于代码的分支化管理。 不支持中文,图形界面支持差,使用难度大。不易推广
1.SVN属于集中化的版本控制系统,有个不太精确的比喻:SVN = 版本控制+ 备份服务器 SVN使用起来有点像是档案仓库的感觉,支持并行读写文件,支持代码的版本化管理,功能包括取出、导入、更新、分支、改名、还原、合并等。 Git是一个分布式版本控制系统,操作命令包括:clone,pull,push,branch ,merge ,rebase,Git擅长的是程序代码的版本化管理。
2.GIT跟SVN一样有自己的集中式版本库或服务器。但GIT更倾向于被使用于分布式模式,也就是每个开发人员从中 心版本库/服务器上check out代码后会在自己的机器上克隆一个自己的版本库。可以这样说,如果你被困在一个不能连接网络的地方时,你仍 然能够提交文件,查看历史版本记录,创建项目分支,对一些人来说,这好像没多大用处,但当你突然遇到没有 网络的环境时,这个将解决你的大麻烦。
3.分支在SVN中一点不特别,就是版本库中的另外的一个目录。如果你想知道是否合并了一个分支,你需要手工运行像 这样的命令svn propget svn:mergeinfo,来确认代码是否被合并。然而,处理GIT的分支却是相当的简单和有趣。 你可以从同一个工作目录下快速的在几个分支间切换。你很容易发现未被合并的分支,你能简单而快捷的合并这些文件。
4.GIT没有一个全局的版本号,而SVN有,目前为止这是跟SVN相比,GIT缺少的最大的一个特征。你也知道,SVN的版本号 实际是任何一个相应时间的源代码快照。我认为它是从CVS进化到SVN的最大的一个突破。
5.GIT的内容完整性要优于SVN:GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁 盘故障和网络问题时降低对版本库的破坏。
下载安装sliksvn
在webstorm上配置sliksvn
如何checkout代码
根据服务器情况选择svn信息,添加好地址就可以导入项目的版本库了。
SVN服务器地址:
如何提交代码, 在文件上选择右键在弹出来的提示框点击commit,就可以看自己更 改过的文件。
SVN 和 Git 哪个更适用于项目管理?
SVN更适用于项目管理, Git仅适用于代码管理。 一个研发队伍的成员正常包括:需求分析、设计、美工、程序员、测试、实施、运维,每个成员在工作中都有产出物, 包括了文档、设计代码、程序代码,这些都需要按项目集中进行管理的。SVN能清楚的按目录进行分类管理, 使项目组的管理处于有序高效的状态。
参考二:版本控制系统-集中式VS分布式
感谢大家观看
BY :李仁|冯强